#include <iostream>
#include <cstring>
using namespace std;

const int N = 1000010;
bool st[N];   //标记某个点是否已经被删除了
int prime[N]; //存储质数
int n;        //获取输入
int res = 0;  //存储答案

int main()
{
    memset(st, false, sizeof st); //先默认所有点都没被划掉
    cin >> n;
    for (int i = 2; i <= n; ++i)
    {
        if (!st[i])
            prime[res++] = i; //没有被2~i-1的时候都没被约过，所以一定是个质数
        for (int j = 2; i * j <= n; ++j)
            st[i * j] = true;
    }
    // for (int i = 0; i < res; ++i)
    //     cout << prime[i] << endl;
    cout << res;
    return 0;
}